package com.sailing.xjpb.ipaas.client.config;

import com.sailing.xjpb.ipaas.client.core.IpaasVersion;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * ipaas客户端相关信息配置: 包括认证地址
 *
 * @author YW
 */
@Data
@ConfigurationProperties(prefix = "xjpb.ipaas.client")
public class IpaasClientProperties {
    /**
     * oauth服务的地址和端口 -例如 <a href="http://127.0.0.1:9200">...</a>
     */
    private String oauthUrl = "http://127.0.0.1:9200";
    /**
     * httpclient属性-与ipaas服务建立连接超时时间-单位ms
     */
    private Integer connectTimeout = 1000;
    /**
     * httpclient属性-读取响应信息超时时间-单位ms
     */
    private Integer socketTimeout = 3000;

    /*** add since 2021-09-30 ***/
    /**
     * bearer-token名称默认bearer：有的版本为Bearer
     */
    private String bearerTokenName;
    /**
     * ipaas版本：精简版和标准版(版本不同，与ipaas交互接口不同)
     */
    private IpaasVersion version = IpaasVersion.MINI;
    /**
     * 连接池最大大小
     */
    private Integer maxTotal = 100;
    /**
     * 每个路由的最大连接数量，
     * 当请求地址是一个路由时，maxTotal=maxPerRoute性能最佳
     */
    private Integer maxPerRoute = 100;
    /**
     * 从连接池中获取连接时间
     */
    private Integer connectionRequestTimeout = 1000;
    /**
     * ipaas租户编码
     */
    private String tenantCode;

    /**
     * 获取ipaas的版本
     *
     * @return ipaas版本号
     */
    public IpaasVersion getVersion() {
        return this.version == null ? IpaasVersion.MINI : this.version;
    }

}